package com.virtualightning.mvvm.tools.shapes

import android.graphics.Canvas
import android.graphics.Paint

/**
 *  Anchor : Create by CimZzz
 *  Time : 2021/12/14 16:55
 *  图形基类
 */
abstract class BaseShape {



	///////////////////////////////////////////////////////////////////////////
	// 代码分割线 on 2021/12/25 10:45 下午 by CimZzz
	// 以下内容为:
	// 移动属性
	///////////////////////////////////////////////////////////////////////////

	/**
	 * X 轴偏移
	 * @param dx Float X 轴偏移量
	 */
	fun offsetX(dx: Float) {
		onOffsetX(dx)
	}

	/**
	 * X 轴偏移
	 * @param dx Float X 轴偏移量
	 */
	internal abstract fun onOffsetX(dx: Float)

	/**
	 * Y 轴偏移
	 * @param dy Float Y 轴偏移量
	 */
	fun offsetY(dy: Float) {
		onOffsetY(dy)
	}

	/**
	 * Y 轴偏移
	 * @param dy Float Y 轴偏移量
	 */
	internal abstract fun onOffsetY(dy: Float)

	/**
	 * X Y 轴同时偏移
	 * @param dx Float X 轴偏移量
	 * @param dy Float Y 轴偏移量
	 */
	fun offset(dx: Float, dy: Float) {
		offsetX(dx)
		offsetY(dy)
	}

	/**
	 * 移动 X 轴至指定位置
	 * @param x Float X 坐标
	 */
	fun moveX(x: Float) {
		onMoveX(x)
	}

	/**
	 * 移动 X 轴至指定位置
	 * @param x Float X 坐标
	 */
	internal abstract fun onMoveX(x: Float)

	/**
	 * 移动 Y 轴至指定位置
	 * @param y Float Y 坐标
	 */
	fun moveY(y: Float) {
		onMoveY(y)
	}

	/**
	 * 移动 Y 轴至指定位置
	 * @param y Float Y 坐标
	 */
	internal abstract fun onMoveY(y: Float)

	/**
	 * 移动至某点
	 * @param x Float X 坐标
	 * @param y Float Y 坐标
	 */
	fun move(x: Float, y: Float) {
		moveX(x)
		moveY(y)
	}

	/**
	 * 移动至某点
	 * @param point VLPoint 点
	 */
	fun move(point: VLPoint) {
		move(point.x, point.y)
	}


	///////////////////////////////////////////////////////////////////////////
	// 代码分割线 on 2021/12/25 11:18 下午 by CimZzz
	// 以下内容为:
	// 绘制方法
	///////////////////////////////////////////////////////////////////////////

	/**
	 * 绘制图形
	 * @param canvas Canvas 画布
	 * @param paint Paint 画笔
	 */
	fun draw(canvas: Canvas, paint: Paint) {
		onDraw(canvas, paint)
	}

	/**
	 * 绘制图形
	 * @param canvas Canvas 画布
	 * @param paint Paint 画笔
	 */
	internal abstract fun onDraw(canvas: Canvas, paint: Paint)


}